// 全屏的高度
var FULL_SCREEM_HEIGHT = $(window).height() - 2;
// 全屏的宽度
var FULL_SCREEM_WIDTH = $(window).width();
// 头 高度
var HEADER_HEIGHT = 44 + 2;
// 尾 高度
var FOOTER_HEIGHT = 0;

// 串口超时时间
var SERAIL_PORT_TIME_OUT = 60;
// 通信操作类型
var COMM_OPER_TYPE;
// 日志最大的数目
var MAX_COUNT_LOG = 50;
// 当前的日志数
var COUNT_LOG = 0;

// 数据采集超时时间，单位分钟
var ACQ_TIME_OUT = 4;
// 数据采集，指令间隔时间，单位秒
var ACQ_INTERVAL_TIME = 2;
// 曲线分析的超时时间，单位分钟
var ANALYSIS_TIME_OUT = 3;
// 数据采集标识
var FCI_DATA_FLAGS = ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8",
		"B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0", "C1", "C2", "C3", "C4",
		"C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", "D0",
		"D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC",
		"DD", "DE", "DF"];
// 发送的数目
var COUNT_SEND = 0;

/**
 * 取得日期，转换成yyyy-MM-dd格式
 */
var getDate = function(date) {

	var year = date.getFullYear().toString();
	var month = (date.getMonth() + 1).toString();
	var day = date.getDate().toString();

	month = month.length == 1 ? "0" + month : month;
	day = day.length == 1 ? "0" + day : day;

	return year + "-" + month + "-" + day;
}

// 初始化功能导航的日期
var initDate = function() {

	var date = new Date();
	var end = getDate(date);
	var begin = getDate(date.AddDay(-3));
	$('#begindate').datetimepicker();
	$('#begindate').datetimepicker({
				value : begin,
				lang : 'ch',
				timepicker : false,
				format : 'Y-m-d'
			});

	$('#enddate').datetimepicker();
	$('#enddate').datetimepicker({
				value : end,
				lang : 'ch',
				timepicker : false,
				format : 'Y-m-d'
			});
}

/**
 * 调整布局
 */
var adjustLayout = function() {

	// 调整header和content的高度
	$("#curvepage").css("height", FULL_SCREEM_HEIGHT);
	$("#showarchive").css("height", FULL_SCREEM_HEIGHT - FOOTER_HEIGHT);
	$("#archivecontent").css("height",
			FULL_SCREEM_HEIGHT - (HEADER_HEIGHT + FOOTER_HEIGHT + 24));

	$("#showimplinfo").css("height", FULL_SCREEM_HEIGHT - FOOTER_HEIGHT);
	$("#implinfocontent").css("height",
			FULL_SCREEM_HEIGHT - (HEADER_HEIGHT + FOOTER_HEIGHT + 24));
};

/**
 * 显示对话框
 */
var showPopup = function(obj) {
	currObj = obj;

	// 对话框中的按钮都显示
	$("#popupmenu").popup("option", "positionTo", $(obj));
	$("#popupmenu").trigger("create");
	$("#popupmenu").popup("open");

	$("#menugroup").controlgroup("refresh");
};

/*
 * 新增按钮绑定的事件
 */
var add = function(e) {
	// 打开新增指示器的对话框
	$("#triggerindicatorpopup").click();

	$(".tipcontentspan", $("#indicatorpopup")).html("");
	$("#_id", $("#indicatorpopup")).val("");
	$("#indicatoraddr", $("#indicatorpopup")).val("");
	$("#phase", $("#indicatorpopup")).val("-1").selectmenu("refresh");
	$("#location", $("#indicatorpopup")).val("");

	$("#operspan").html("添加");
	$(".ui-btn-text", $("#indicatoreditbtn")).html("添加");

	$("#indicatoreditbtn").unbind("click").bind("click", editIndicator);
};

/**
 * 编辑指示器（新增或修改）
 */
var editIndicator = function() {
	var _id = $("#_id", $("#indicatorpopup")).val();
	var indicatoraddr = $("#indicatoraddr", $("#indicatorpopup")).val()
			.toUpperCase();
	var phase = $("#phase", $("#indicatorpopup")).val();
	var location = $("#location", $("#indicatorpopup")).val();
	var phaseText = $("#phase", $("#indicatorpopup")).find("option:selected")
			.text();

	var msg = "";
	if (0 < indicatoraddr.trim().length && 6 != indicatoraddr.trim().length) {
		msg = "电流采集器地址的长度错误, 长度为6个字符!";
		$(".tipcontentspan", $("#indicatorpopup")).html(msg);
		return false;
	}

	var lis = $("#indicatorlist li");
	for (var i = 0; i < lis.length; i++) {
		var temp = $(lis[i]).text();
		var tid = $(lis[i]).attr("id").split("_")[1];
		if (_id == tid) {
			continue;
		}
		if (temp.indexOf(phaseText) != -1) {
			msg = "相位错误, 已存在该相位的电流采集器!";
			$(".tipcontentspan", $("#indicatorpopup")).html(msg);
			return false;
		}
	}

	if (30 < location.strLen()) {
		msg = "安装位置不能超过30个字符!";
		$(".tipcontentspan", $("#indicatorpopup")).html(msg);
		return false;
	}

	try {
		var params = "{";
		if (null != _id && undefined != _id && 0 < _id.length) {
			params += "'_id': '" + _id + "',";
		}
		params += "'indicatoraddr': '" + indicatoraddr + "',";
		params += "'phase': '" + phase + "',";
		params += "'location': '" + location + "'";
		params += "}";
		window.indicatorjsi.addOrModifyIndicator(params);
	} catch (e) {
	}
};

/**
 * 编辑的回调方法
 */
var editSuccessCallback = function(data) {

	var success = data.success;
	if (success) {
		$("#indicatorpopup").popup("close");

		if ("modify" == data.oper) {

			var indicatorObj = data.indicator;
			var phase = indicatorObj.phase;
			var phaseText = phase == 1 ? "A 相" : (phase == 2 ? "B 相" : "C 相");

			if ("none" != $("#maindiv").css("display")
					&& $("#indicatorid").val() == indicatorObj._id) {
				$("#staddr", $("#acqformtable"))
						.val(indicatorObj.indicatoraddr);
				$("#stphase", $("#acqformtable")).val(phaseText);
				$("#stlocation", $("#acqformtable")).val(indicatorObj.location);
			}
		}
		// 动态获取台账树
		try {
			window.indicatorjsi.queryIndicators("");
		} catch (e) {
		}
	}
};

/*
 * 修改按钮绑定的事件
 */
var modify = function() {

	var temp = $(currObj);
	try {
		var indicatorId = temp.attr("id").split("_")[1];
		window.indicatorjsi.queryIndicatorById(indicatorId);
	} catch (e) {
	}
};

/**
 * 根据指示器ID获取指示器的回调方法
 */
var queryIndicatorByIdCallback = function(data) {

	// 打开新增指示器的对话框
	$("#triggerindicatorpopup").click();

	$(".tipcontentspan", $("#indicatorpopup")).html("");
	$("#_id", $("#indicatorpopup")).val(data._id);
	$("#indicatoraddr", $("#indicatorpopup")).val(data.indicatoraddr);
	$("#phase", $("#indicatorpopup")).val(data.phase).selectmenu("refresh");
	$("#location", $("#indicatorpopup")).val(data.location);

	$("#operspan").html("修改");
	$(".ui-btn-text", $("#indicatoreditbtn")).html("修改");

	$("#indicatoreditbtn").unbind("click").bind("click", editIndicator);
};

/*
 * 删除按钮绑定的事件
 */
var remove = function() {
	var temp = $(currObj);
	$("#triggerremoveconfirmpopup").click();

	var id = temp.attr("id").split("_")[1];
	$("#_id", $("#removeconfirmpopup")).val(id);

	// 删除确认对话框按钮绑定事件
	$("#removeyesbtn").unbind("click").bind("click", doRemove);
};

/**
 * 删除提交
 */
var doRemove = function() {
	var indicatorId = $("#_id", $("#removeconfirmpopup")).val();
	try {
		window.indicatorjsi.removeIndicator(indicatorId);
	} catch (e) {
	}
};

/**
 * 删除成功的回调方法
 */
var removeSuccuessCallback = function(data) {

	if (data.indicatorId == $("#indicatorid").val()) {
		$("#tipdiv").hide();
		$("#maindiv").hide();
		$("#curvediv").hide();
	}

	// 关闭删除确认对话框
	$("#removeconfirmpopup").popup("close");
	// 动态获取台账树
	try {
		window.indicatorjsi.queryIndicators("");
	} catch (e) {
	}
};

/**
 * 停止删除的回调方法
 */
var removePauseCallback = function() {
	// 关闭删除确认对话框
	$("#removeconfirmpopup").popup("close");
	// 打开台账数据panel
	$("#showarchive").panel("open");
};

/**
 * 不能删除
 */
var enableBtn = function() {
}
/**
 * 插入日志
 * 
 * @param {}
 *            msg
 */
var addLog = function(msg) {

	var date = new Date();
	var time = getNowDatetime(date);
	var terminalId = "currentcurve";
	var params = "{'content': '" + msg + "', 'time': '" + date.getTime()
			+ "', 'terminalid': '" + terminalId + "'}";
	try {
		window.logjsi.addLog(params);
	} catch (e) {
	}

	createMsgWithBox(msg, time);
};

/**
 * 生成带箭头提示框的消息
 */
var createMsgWithBox = function(msg, time) {

	if (++COUNT_LOG > MAX_COUNT_LOG) {
		$(".log-div", $("#logtabcontent")).empty();
		COUNT_LOG = 1;
		CURR_PAGE = 1;
	}

	var content = "<p class='time-list'>" + time
			+ "<p><div class=\"ark-poptip\">"
			+ "<div class=\"ark-poptip-shadow\">"
			+ "<div class=\"ark-poptip-container\">"
			+ "<div class=\"ark-poptip-arrow ark-poptip-arrow-a\">"
			+ "<em>◆</em><span>◆</span></div>"
			+ "<div class=\"ark-poptip-content\">" + msg
			+ "</div></div></div></div></div>";

	$(".log-div", $("#logtabcontent")).prepend(content);
};

/**
 * 开始按钮方法
 */
var flip = function() {

	if (!USB_ATTACHED) {
		try {
			window.debugjsi.showNoUSBDeviceMsg();
		} catch (e) {
		}
		return;
	}

	var indicatorAddr = $("#iaddr").val();
	// startTimeout($("#flipbtn")[0], "翻牌闪灯", "加载中...");
	// 禁用按钮
	$("#flipbtn").button("disable");
	$("#acqdatabtn").button("disable");

	// 重新启用按钮
	TIME_OUT = setTimeout(function() {
				msg = "通信超时, 请确认无线模块和电流采集器的状态!";
				showMsg(msg, 10000);
				addLog(msg);

				clear();
			}, SERAIL_PORT_TIME_OUT * 1000);

	try {
		COMM_OPER_TYPE = "flip";
		var params = "{'indicatorAddr':'" + indicatorAddr
				+ "','data':'55','oper':'curve'}";
		window.debugjsi.flip(params);
	} catch (e) {
	}
};

/**
 * 翻牌闪灯执行的回调方法
 * 
 * @param {}
 *            data
 */
var flipCallback = function(data) {
	var success = data.success;
	if (success) {
		// var obj = $("#flipbtn");
		// (obj, "翻牌闪灯");

		var msg = "电流采集器运行正常!";
		showMsg(msg, 10000);
		addLog(msg);

		clear();
	}
};

/**
 * 下行报文的操作方法
 * 
 * @param {}
 *            frame
 */
var showOutFrame = function(frame) {

	var msg = "";
	if ("flip" == COMM_OPER_TYPE) {
		msg = "[ 翻牌闪灯 ]命令下发成功!";
	} else if ("data" == COMM_OPER_TYPE) {
		msg = "[ 电流数据采集 ]命令下发成功!";
	} else {
		return;
	}

	showMsg(msg);
	addLog(msg + "<br/><div style=\"color: gray\">" + frame + "</div>");
}

// 数据采集失败表计
var IS_FAIL = false;
/**
 * 收到上行报文的操作方法
 * 
 * @param {}
 *            frame
 */
var showInFrame = function(frame) {

	var msg = "";
	if ("EE EE EE EE EE EE EE EE EE EE" == frame.trim()) {
		msg = "收到调试模块超时报文, 通信超时!";
		showMsg(msg);
		addLog(msg);
	} else {
		var frameArr = frame.trim().split(" ");
		var len = parseInt(frameArr[1], 16);
		if (len <= 6) {
			IS_FAIL = true;
			return;
		}

		if ("flip" != COMM_OPER_TYPE && "data" != COMM_OPER_TYPE) {
			IS_FAIL = true;
			return;
		}

		msg = "收到响应报文!";
		showMsg(msg);
		addLog(msg + "<br/><div style=\"color: gray\">" + frame + "</div>");
	}
}

/**
 * 开始超时时间计时
 * 
 * @param {}
 *            obj
 * @param {}
 *            btnValue
 */
var startTimeout = function(obj, btnValue, processTipText) {

	processTipText = null == (processTipText || 0 == processTipText.trim().length)
			? "加载中..."
			: processTipText;
	// 禁用按钮
	$(obj).button("disable");
	$(".ui-btn-text", $(obj).parent()).html(processTipText);

	// 重新启用按钮
	TIME_OUT = setTimeout(function() {
				$(obj).button("enable");
				$(".ui-btn-text", $(obj).parent()).html(btnValue);

				msg = "通信超时, 请确认无线模块和电流采集器的状态!";
				showMsg(msg, 10000);
				addLog(msg);

				$("#loadingdiv").hide();
			}, SERAIL_PORT_TIME_OUT * 1000);
};

/**
 * 完成超时时间计时
 * 
 * @param {}
 *            obj
 * @param {}
 *            btnValue
 */
var endTimeout = function(obj, btnValue) {

	clearTimeout(TIME_OUT);
	// 启用按钮
	obj.button("enable");
	$(".ui-btn-text", obj.parent()).html(btnValue);
};

/**
 * 台账树上点击指示器的回调方法
 */
var getIndicatorCallback = function(data) {

	// 关掉弹出的panel
	$("#showarchive").panel("close");

	var indicatorObj = data.indicator;
	var indicatorId = indicatorObj._id;
	var indicatorAddr = indicatorObj.indicatoraddr;
	var phase = indicatorObj.phase;
	var phaseText = phase == 1 ? "A 相" : (phase == 2 ? "B 相" : "C 相");

	$("#indicatorid").val(indicatorId);
	$("#iaddr").val(indicatorAddr);

	$("#staddr", $("#acqformtable")).val(indicatorObj.indicatoraddr);
	$("#stphase", $("#acqformtable")).val(phaseText);
	$("#stlocation", $("#acqformtable")).val(indicatorObj.location);

	$("input", $("#acqformtable")).parent()
			.removeClass("ui-shadow-inset ui-corner-all ui-body-f").css({
						'border-bottom' : '1px dashed #08a09e',
						'font-color' : 'gray'
					});

	$("input", $("#acqformtable")).css({
				'color' : 'gray'
			});

	// 隐藏曲线区域，显示主区域和第一提示语区域
	$("#curvediv").hide();
	$("#maindiv").show();
	$("#tipdiv").show();

	// 翻牌闪灯按钮事件
	$("#flipbtn").unbind().bind("touchend", function() {
				flip();
			});

	// 清空曲线
	$("#CURVE_CONTAINER").empty();
	CHARTS = null;
};

/**
 * 清除，启用按钮、关闭加载进度条、清除计时器
 */
var clear = function() {
	$("#acqdatabtn").button("enable");
	$("#flipbtn").button("enable");

	$("#loadingdiv").hide();
	clearTimeout(TIME_OUT);
};

// 数据采集状态
var COLLECT_STATUS = 0;
// 休眠时间是否为20秒
var IS_SLEEP_TIME_20 = false;
/**
 * 数据采集事件
 */
var collectData = function() {

	COLLECT_STATUS = 0;
	clearTimeout(TIME_OUT);

	if (!USB_ATTACHED) {
		try {
			window.debugjsi.showNoUSBDeviceMsg();
		} catch (e) {
		}
		return;
	}

	// 禁用改按钮
	$(this).button("disable");
	$("#flipbtn").button("disable");

	TIME_OUT = setTimeout(function() {
				var msg = "";
				if (0 == COLLECT_STATUS) {
					msg = "数据采集失败, 请确认通信模块是否已挂载!";
				} else if (1 == COLLECT_STATUS) {
					msg = "数据采集部分失败, 请重新采集!";
				} else if (2 == COLLECT_STATUS) {
					msg = "数据采集完成!";
				}

				showMsg(msg, 10000);
				addLog(msg);

				clear();
			}, ACQ_TIME_OUT * 60 * 1000);

	// 清空曲线内容
	$("#CURVE_CONTAINER").empty();
	CHARTS = null;

	// 设置指示器的休眠时间为1秒
	var indicatorAddr = $("#iaddr").val();
	var indicatorId = $("#indicatorid").val();
	try {
		var msg = "数据采集已启动, 请稍候...";
		showMsg(msg, 10000);
		addLog(msg);

		$("#loadingdiv").show();

		IS_SLEEP_TIME_20 = true;
		COMM_OPER_TYPE = "sleeptime";
		window.debugjsi.setSleepTime(indicatorAddr, "1");
	} catch (e) {
	}
};

// 最小单位的命令标识，备份当前发送的，用于重发
var SUB_ACTION_ID;
// 是否重发
var IS_RESEND = true;
// 重发次数
var RESEND_COUNT = 0;
// 当前操作的序号
var FCI_FLAGS_SEQ = 0;
/**
 * 设置休眠时间的回调函数
 */
var setSleepTimeCallback = function() {

	if (IS_SLEEP_TIME_20) {
		IS_SLEEP_TIME_20 = false;

		// 下发召测电流数据
		try {
			ALL_DAY_CURRENTS = new Array();
			ACTION_IDS_SUCCESS = new Array();
			COUNT_SEND = 0;

			FCI_FLAGS_SEQ = 0;
			SUB_ACTION_ID = FCI_DATA_FLAGS[FCI_FLAGS_SEQ];
			RESEND_COUNT = 0;
			IS_RESEND = true;
			setTimeout("getLoadCurrent()", ACQ_INTERVAL_TIME * 1000);
		} catch (e) {
		}
	} else {
		if (IS_FAIL) { // 避免失败重新采集时弹出以下信息，此时收到的为指示器地址的报文
			return;
		}
	}
};

// 重发的超时器
var RESEND_TIME_OUT;
var getLoadCurrent = function() {
	COMM_OPER_TYPE = "data";
	IS_FAIL = false;

	if (RESEND_COUNT == 3) {

		var msg = "连续 3 条采集命令未收到回应, 请重试!";
		showMsg(msg, 20000);
		addLog(msg);

		clear();
		return;
	}

	if (IS_RESEND) {
		try {
			var indicatorAddr = $("#iaddr").val();
			window.debugjsi.getLoadCurrent(indicatorAddr, SUB_ACTION_ID);
			RESEND_COUNT++;
			IS_RESEND = true;
		} catch (e) {
		}
	}

	RESEND_TIME_OUT = setTimeout("getLoadCurrent()", 5000);
};

// 一天所有的电流集合
var ALL_DAY_CURRENTS = new Array();
// 成功返回电流数据的标记
var ACTION_IDS_SUCCESS = new Array();
/**
 * 获取线路负载电流的回调方法
 * 
 * @param {}
 *            data
 */
var getLoadCurrentCallback = function(data) {
	data = JSON.parse(data);

	// 收到回复，取消重发
	IS_RESEND = false;
	clearTimeout(RESEND_TIME_OUT);

	var actionId = data.actionId;
	if (ACTION_IDS_SUCCESS[ACTION_IDS_SUCCESS.length - 1] == actionId) { // 避免收到重复的报文
		RESEND_COUNT = 0;
		IS_RESEND = true;
		RESEND_TIME_OUT = setTimeout("getLoadCurrent()", ACQ_INTERVAL_TIME
						* 1000);
		return;
	}

	if (SUB_ACTION_ID != actionId) { // 发送和收到的标识不一样，重发
		RESEND_COUNT = 0;
		IS_RESEND = true;
		RESEND_TIME_OUT = setTimeout("getLoadCurrent()", ACQ_INTERVAL_TIME
						* 1000);
		return;
	}

	try {
		var success = data.success;
		if (success) {
			COLLECT_STATUS = 1;// 部分成功
			COUNT_SEND++; // 发送成功

			ACTION_IDS_SUCCESS.push(actionId);

			var currents = data.currents;
			currents = JSON.parse(currents);
			for (var i = currents.length - 1; i >= 0; i--) {
				ALL_DAY_CURRENTS.push(currents[i]);
			}

			if (FCI_DATA_FLAGS.length * 18 == ALL_DAY_CURRENTS.length) { // 所有的数据都回来了，存储到数据库，存储后的回调带上时间显示曲线图
				addLoadCurrent();
			} else {
				if (COUNT_SEND < FCI_DATA_FLAGS.length) {
					// 下发召测电流数据
					try {
						SUB_ACTION_ID = FCI_DATA_FLAGS[++FCI_FLAGS_SEQ];
						RESEND_COUNT = 0;
						IS_RESEND = true;
						RESEND_TIME_OUT = setTimeout("getLoadCurrent()",
								ACQ_INTERVAL_TIME * 1000);
					} catch (e) {
					}
				} else {
					var msg = "数据丢失, 请重试!";
					showMsg(msg, 10000);
					addLog(msg);

					clear();
				}
			}
		} else {

			var dataFlag = data.dataFlag;
			if (1 == dataFlag) {
				var msg = "电流数据暂未存储, 请稍候重试!";
				showMsg(msg, 10000);
				addLog(msg);

				clear();
			} else if (2 == dataFlag) { // 无数据，结束
				addLoadCurrent();
			}
		}
	} catch (e) {
	}
};

/**
 * 插入负载电流
 */
var addLoadCurrent = function() {
	try {
		var msg = "电流数据准备中, 曲线即将展示!";
		showMsg(msg, 10000);
		addLog(msg);

		var indicatorId = $("#indicatorid").val();
		window.loadcurrentjsi.addLoadCurrent(ALL_DAY_CURRENTS.toString(),
				indicatorId);
	} catch (e) {
		$("#loadingdiv").hide();

		var msg = "数据存储失败, 请重试!";
		showMsg(msg, 10000);
		addLog(msg);
	}
}

var CHARTS;
/**
 * 点击查询按钮，激活事件
 */
var addLoadCurrentCallback = function(data) {

	if (!CHARTS) {
		var series = [{
					name : '电流',
					data : data,
					tooltip : {
						valueDecimals : 4
					}
				}];
		var container = "CURVE_CONTAINER";
		var title = "电流曲线";
		var yAxisText = "电流";
		CHARTS = createCurve(container, title, yAxisText, series);
	}

	COLLECT_STATUS = 2;// 全部采集

	clear();

	var indicatorAddr = $("#iaddr").val();
	try {
		IS_SLEEP_TIME_20 = false;
		COMM_OPER_TYPE = "sleeptime";
		window.debugjsi.setSleepTime(indicatorAddr, "20");
	} catch (e) {
	}

	setTimeout(function() {
				var msg = "数据采集完成!";
				showMsg(msg, 20000);
				addLog(msg);
			}, 1000);
}

/**
 * 曲线分析绑定方法
 */
var analysisCurve = function(beginDate, endDate) {
	$("#analysisbtn", $("#showarchive")).button("disable");
	$("#fanalysisbtn", $("#curvediv")).button("disable");
	try {
		window.loadcurrentjsi.showLoadCurrentCurve(beginDate, endDate);

		TIME_OUT = setTimeout(function() {

					var msg = "加载电流曲线超时, 请重试!";
					showMsg(msg, 10000);
					addLog(msg);

					$("#analysisbtn").button("enable");
					$("#fanalysisbtn").button("enable");
				}, ANALYSIS_TIME_OUT * 60 * 1000);
	} catch (e) {
	}
}

/**
 * 导出Excel的回调方法
 * 
 * @param {}
 *            data
 */
var exportLoadCurrentsCallback = function(data) {
	var success = data.success;
	if (success) {
		clearTimeout(TIME_OUT);
		$("#exportbtn").button("enable");

		showMsg("导出文件的路径为: <font color='#08a09e'><b><u>" + data.file
						+ "</u></b></font>", 20 * 1000);
	}
};

/**
 * 曲线分析的回调方法
 * 
 * @param {}
 *            data
 */
var showLoadCurrentCurveCallback = function(data) {

	var success = data.success;
	if (success) {

		// 取消超时，启用按钮
		clearTimeout(TIME_OUT);
		$("#analysisbtn").button("enable");
		$("#fanalysisbtn").button("enable");

		// 设置时间
		$('#fbegindate').datetimepicker();
		$('#fbegindate').datetimepicker({
					lang : 'ch',
					timepicker : false,
					format : 'Y-m-d'
				});

		$('#fenddate').datetimepicker();
		$('#fenddate').datetimepicker({
					lang : 'ch',
					timepicker : false,
					format : 'Y-m-d'
				});

		if (0 == $("#fbegindate").val().trim().length) {
			$("#fbegindate").val($("#begindate").val());
		}
		if (0 == $("#fenddate").val().trim().length) {
			$("#fenddate").val($("#enddate").val());
		}

		// 关闭左边的panel
		$("#showarchive").panel("close");
		// 右边显示曲线
		$("#tipdiv").hide();
		$("#maindiv").hide();
		$("#curvediv").show();

		// 生成曲线图
		var series = data.series;
		var container = "F_CURVE_CONTAINER";
		var title = "电流曲线";
		var yAxisText = "电流";
		createCurve(container, title, yAxisText, series);
	}
};

// 图形

/**
 * 生成曲线
 * 
 * @param {}
 *            container
 * @param {}
 *            title
 * @param {}
 *            yAxisText
 * @param {}
 *            series
 * @return {}
 */
var createCurve = function(container, title, yAxisText, series) {
	var charts = new Highcharts.StockChart({
				chart : {
					// 将报表对象渲染到层上
					renderTo : container

				}, // chart end
				// var charts = $("#" + container).highcharts("StockChart", {

				/**
				 * 版权信息配置，不用修改直接复制
				 * 
				 * @param {boolean}
				 *            enabled 是否显示版权信息
				 * @param {string}
				 *            href 版权信息所链接到的地址
				 * @param {string}
				 *            text 版权信息所显示的文字内容
				 */
				credits : {
					enabled : false,
					href : "http://www.wasion.cn",
					text : '威胜电气有限公司'
				},

				/**
				 * 语言配置，不用修改直接复制
				 * 
				 * @param {array}
				 *            months 配置月份语言
				 * @param {array}
				 *            shortMonths 配置短月份
				 * @param {array}
				 *            weekdays 配置星期
				 * @param {string}
				 *            exportButtonTitle 导出按钮的标题文字
				 * @param {string}
				 *            printButtonTitle 打印按钮的标题文字
				 */
				lang : {
					months : ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月',
							'九月', '十月', '十一月', '十二月'],
					weekdays : ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
					exportButtonTitle : '导出',
					printButtonTitle : '打印'
				},

				/**
				 * 导出配置，不用修改直接复制
				 * 
				 * @param {boolean}
				 *            enabled 是否允许导出
				 * @param {object}
				 *            buttons 关于与导出和打印按钮相关的配置对象
				 * @param {string}
				 *            filename 导出文件的文件名
				 * @param {string}
				 *            type 默认导出文件的格式
				 */
				exporting : {
					// 是否允许导出
					enabled : false,
					// 按钮配置
					buttons : {
						// 导出按钮配置
						exportButton : {
							menuItems : null,
							onclick : function() {
								this.exportChart();
							}
						},
						// 打印按钮配置
						printButton : {
							enabled : true
						}
					},
					// 文件名
					filename : '报表',
					// 配置导出接口
					url : 'http://',
					// 导出文件默认类型
					type : 'application/pdf'
				},

				/**
				 * 图表的标题
				 * 
				 * @param {string}
				 *            text 图表的标题，如果不需要显示标题，直接设置为空字符串就行
				 */
				title : {
					text : title
				},

				/**
				 * 域选择配置
				 * 
				 * @param {array}
				 *            buttons 缩放选择按钮
				 * @param {int}
				 *            selected 默认选择缩放按钮中的第几个
				 * @param {boolean}
				 *            inputEnabled 是否允许input标签选框
				 */
				rangeSelector : {
					// 缩放选择按钮，是一个数组。
					// 其中type可以是： 'millisecond', 'second', 'minute', 'day',
					// 'week',
					// 'month', 'ytd' (year to date), 'year' 和 'all'。
					// 其中count是指多少个单位type。
					// 其中text是配置显示在按钮上的文字
					buttons : [{
								type : 'day',
								count : 1,
								text : '1日'
							}, {
								type : 'week',
								count : 1,
								text : '1周'
							}, {
								type : 'month',
								count : 1,
								text : '1月'
							}, {
								type : 'year',
								count : 1,
								text : '1年'
							}, {
								type : 'all',
								text : '所有'
							}],
					// 默认选择域：0（缩放按钮中的第一个）、1（缩放按钮中的第二个）……
					selected : 4,
					// 是否允许input标签选框
					inputEnabled : false
				},

				/**
				 * 气泡示说明标签
				 * 
				 * @param {string}
				 *            xDateFormat 日期时间格式化
				 */
				tooltip : {
					// 日期时间格式化
					xDateFormat : '%Y-%m-%d %H:%M:%S',
					// 精度，小数点后4位
					valueDecimals : 4
				},

				/**
				 * X轴坐标配置
				 * 
				 * @param {object}
				 *            dateTimeLabelFormats x轴日期时间格式化，不用修改直接使用
				 */
				xAxis : {
					// 如果X轴刻度是日期或时间，该配置是格式化日期及时间显示格式
					dateTimeLabelFormats : {
						second : '%Y-%m-%d<br/>%H:%M:%S',
						minute : '%Y-%m-%d<br/>%H:%M',
						hour : '%Y-%m-%d<br/>%H:%M',
						day : '%Y<br/>%m-%d',
						week : '%Y<br/>%m-%d',
						month : '%Y-%m',
						year : '%Y'
					}
				},
				yAxis : {
					title : {
						text : yAxisText
					},
					lineWidth : 2
				},

				/**
				 * 数据源配置，本身是一个对象数组
				 * 
				 * @param {string}
				 *            name 数据序列的名称
				 * @param {array}
				 *            data 数据序列，是一个对象数组。data的结构：[[时间戳, 值], [时间戳, 值],
				 *            [时间戳, 值], ……]
				 */
				series : series
			});

	return charts;
}

/**
 * Grid theme for Highcharts JS
 * 
 * @author Torstein Hønsi 修改：高意
 */
Highcharts.theme = {

	colors : ['#2B73AF', '#FFA500', '#00FF00', '#FF0000', '#058DC7', '#50B432',
			'#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263',
			'#6AF9C4'],

	chart : {
		backgroundColor : {
			linearGradient : {
				x1 : 0,
				y1 : 0,
				x2 : 1,
				y2 : 1
			},
			stops : [[0, 'rgb(255, 255, 255)'], [1, 'rgb(224,243,255)']]
		},
		// borderWidth: 1,
		borderColor : '#37ACDF',
		plotBackgroundColor : 'rgba(255, 255, 255, .9)',
		plotShadow : true,
		plotBorderWidth : 1,
		plotBorderColor : '#FED0A2',
		shadow : false
	},
	title : {
		style : {
			color : '#333',
			font : '16px "黑体", Verdana, sans-serif'
		}
	},
	subtitle : {
		style : {
			color : '#666666',
			font : 'bold 12px "Trebuchet MS", Verdana, sans-serif'
		}
	},
	xAxis : {
		gridLineWidth : 1,
		lineColor : '#6C633B',
		tickColor : '#6C633B',
		gridLineColor : '#FD9D3C',
		minorGridLineColor : '#FED0A2',
		labels : {
			style : {
				color : '#6C633B',
				font : '11px "Times New Roman", Verdana, sans-serif'
			}
		},
		title : {
			style : {
				color : '#333',
				fontWeight : 'bold',
				fontSize : '12px',
				fontFamily : 'Trebuchet MS, Verdana, sans-serif'

			}
		}
	},
	yAxis : {
		minorTickInterval : 'auto',
		lineColor : '#6C633B',
		lineWidth : 1,
		tickWidth : 1,
		tickColor : '#6C633B',
		gridLineColor : '#FD9D3C',
		minorGridLineColor : '#FED0A2',
		labels : {
			style : {
				color : '#6C633B',
				font : '11px Trebuchet MS, Verdana, sans-serif'
			}
		},
		title : {
			style : {
				color : '#333',
				fontWeight : 'bold',
				fontSize : '12px',
				fontFamily : 'Trebuchet MS, Verdana, sans-serif'
			}
		}
	},
	legend : {
		itemStyle : {
			font : '9pt Trebuchet MS, Verdana, sans-serif',
			color : 'black'

		},
		itemHoverStyle : {
			color : '#039'
		},
		itemHiddenStyle : {
			color : 'gray'
		}
	},
	labels : {
		style : {
			color : '#99b'
		}
	},

	navigation : {
		buttonOptions : {
			theme : {
				stroke : '#CCCCCC'
			}
		}
	}
};

// Apply the theme
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);

/** ------------------iScroll上拉事件相关----------------------------------- */
var dataScroll, pullUpEl, pullUpOffset;
var CURR_PAGE = 1;
/**
 * 上拉事件
 */
var pullUpAction = function() {

	queryLogsByPage()

	// 刷新
	dataScroll.refresh();
};

/**
 * 初始化iScroll控件
 */
function loaded() {

	pullUpEl = $('#pullup');
	pullUpOffset = pullUpEl.attr("offsetHeight");

	dataScroll = new iScroll('wrapper', {
				scrollbarClass : 'myScrollbar', /* 重要样式 */
				useTransition : false,
				onRefresh : function() {
					if (pullUpEl.hasClass('loading')) {
						pullUpEl.removeClass('loading');
						$('.pullup-label', pullUpEl).html('上拉加载更多...');
					}
				},
				onScrollMove : function() {
					if (this.y > 0) {
						pullUpEl.removeClass('flip');
						return;
					}

					if (this.y < (this.maxScrollY - 5)
							&& !pullUpEl.hasClass('flip')) {
						pullUpEl.removeClass();
						pullUpEl.addClass('flip');
						$('.pullup-label', pullUpEl).html('松手开始更新...');
						this.maxScrollY = this.maxScrollY;
					} else if (this.y > (this.maxScrollY + 5)
							&& pullUpEl.hasClass('flip')) {
						pullUpEl.removeClass();
						$('.pullup-label', pullUpEl).html('上拉加载更多...');
						this.maxScrollY = pullUpOffset;
					}
				},
				onScrollEnd : function() {
					if (pullUpEl.hasClass('flip')) {
						pullUpEl.removeClass();
						pullUpEl.addClass('loading');
						$('.pullup-label', pullUpEl).html('加载中...');
						pullUpAction();
					}
				}
			});
};
/** ----------------------------------------------------- */

var LAST_TIME;
/**
 * 分页查询日志
 */
var queryLogsByPage = function() {

	var time = $(".time-list:last").html();
	var longTime = 0;
	if (undefined == time || null == time || 0 == time.trim().lenth) {
		longTime = 0;
	} else {
		var date = new Date(time.replace(/\-/g, "\/"));
		longTime = date.getTime();
	}
	if (LAST_TIME == longTime) {
		showMsg("已加载所有日志!");
		return;
	}
	LAST_TIME = longTime;

	var terminalId = "currentcurve";
	try {
		var params = "{'pagesize': '6', 'page': '" + CURR_PAGE
				+ "', 'terminalid': '" + terminalId + "', 'time': '" + longTime
				+ "'}";
		window.logjsi.queryLogsByPage(params);
	} catch (e) {
	}
};

/**
 * 分页查询日志的回调方法
 * 
 * @param {}
 *            data
 */
var queryLogsByPageCallback = function(data) {

	for (var i = 0; i < data.length; i++) {
		var date = new Date();
		date.setTime(data[i].time);
		var content = "<p class='time-list'>" + getNowDatetime(date)
				+ "<p><div class=\"ark-poptip\">"
				+ "<div class=\"ark-poptip-shadow\">"
				+ "<div class=\"ark-poptip-container\">"
				+ "<div class=\"ark-poptip-arrow ark-poptip-arrow-a\">"
				+ "<em>◆</em><span>◆</span></div>"
				+ "<div class=\"ark-poptip-content\">" + data[i].content
				+ "</div></div></div></div></div>"

		$(".log-div", $("#logtabcontent")).append(content);
	}

	CURR_PAGE++;
};